package org.anachronos.jeep.agent;

import java.lang.instrument.ClassDefinition;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.UnmodifiableClassException;

public interface InstrumentationJdk5 {

	void addTransformer(ClassFileTransformer transformer);

	boolean removeTransformer(ClassFileTransformer transformer);

	boolean isRedefineClassesSupported();

	void redefineClasses(ClassDefinition... classDefinitions)
			throws ClassNotFoundException, UnmodifiableClassException;

	Class<?>[] getAllLoadedClasses();

	Class<?>[] getInitiatedClasses(ClassLoader classLoader);

	long getObjectSize(Object object);

}
